private List<Variable> parseArguments(
     SimpleDartWithArraysParser.FunctionDeclarationContext function) {
   List<Variable> args = new ArrayList<>();
   SimpleDartWithArraysParser.VariableListContext variableListContext =
       function.functionParameters().variableList();
   if (variableListContext != null) {
     for (SimpleDartWithArraysParser.VariableContext argContext : variableListContext.variable()) {
       String argName = argContext.IDENT().getText();
       ValueType argValueType = ValueType.fromString(argContext.variableType().getText());
       Variable arg = new VariableImpl(argName, argValueType);
       args.add(arg);
     }
   }
   return args;
 }
 private Function buildFunction(SimpleDartWithArraysParser.FunctionDeclarationContext function) {
   String name = function.IDENT().getText();
   ValueType returnValueType = ValueType.fromString(function.typeIdentifier().getText());
   List<Variable> args = parseArguments(function);
   return new FunctionImpl(name, returnValueType, args);
 }