code: public FunctionDeclaration createDeclaration(
        ImportStack importStack, Context context, Object object, Method method
    ) {
      StringBuilder signature = new StringBuilder();
      Parameter[] parameters = method.getParameters();
  
      List<ArgumentConverter> argumentConverters = new ArrayList<>(method.getParameterCount());
      signature.append(method.getName()).append("(");
  
      int parameterCount = 0;
      for (Parameter parameter : parameters) {
        ArgumentConverter argumentConverter = createArgumentConverter(object, method, parameter);
  
        argumentConverters.add(argumentConverter);
  
        List<FunctionArgumentSignature> list = argumentConverter.argumentSignatures(
            object,
            method,
            parameter,
            functionArgumentSignatureFactory
        );
  
        for (FunctionArgumentSignature functionArgumentSignature : list) {
          String name = functionArgumentSignature.getName();
          Object defaultValue = functionArgumentSignature.getDefaultValue();
  
          if (parameterCount > 0) {
            signature.append(", ");
          }
  
          signature.append("$").append(name);
  
          if (null != defaultValue) {
            signature.append(": ").append(formatDefaultValue(defaultValue));
          }
  
          parameterCount++;
        }
      }
  
      signature.append(")");
  
      // Overwrite signature with special ones
      if (method.isAnnotationPresent(WarnFunction.class)) {
        signature.setLength(0);
        signature.append("@warn");
      } else if (method.isAnnotationPresent(ErrorFunction.class)) {
        signature.setLength(0);
        signature.append("@error");
      } else if (method.isAnnotationPresent(DebugFunction.class)) {
        signature.setLength(0);
        signature.append("@debug");
      }
  
      return new FunctionDeclaration(
          importStack,
          context,
          signature.toString(),
          object,
          method,
          argumentConverters
      );
    }
docs: Create a function declaration from an object method.
  
  @param importStack The import stack.
  @param object      The object.
  @param method      The method.
  @return The newly created function declaration.