class NativeContract extends PrecompiledContracts.PrecompiledContract {

    @Override
    public long getGasForData(byte[] data) {
        // Preliminary validation: we need an execution environment
        if (executionEnvironment == null) {
            throw new RuntimeException("Execution environment is null");
        }

        Optional<NativeMethod.WithArguments> methodWithArguments = parseData(data);

        if (!methodWithArguments.isPresent()) {
            // TODO: Define whether we should log or even do something different in this case.
            // TODO: I reckon this is fine since execution doesn't actually go ahead and
            // TODO: inexistent method logging happens within parseData anyway.
            return 0L;
        }

        return methodWithArguments.get().getGas();
    }

    public  NativeContract(ActivationConfig activationConfig, RskAddress contractAddress);

}