code: protected final void declareReturnType(IndentingWriter o, List<IType> intermediates, boolean usesDefaltValues) throws BindingException {
      generateAccessModifier(o);
  
      if (returnType == null && intermediates == null) {
        o.print("void ");
      } else {
        // we assume that the [retval] param to be passed by reference
        TypeBinding retBinding = TypeBinding.bind(g, returnType, null);
  
        // add @ReturnValue if necessary
        if ((!retBinding.isDefault && needsMarshalAs()) || (retParam != -1 && (params[retParam].isIn() || retParam != params.length - 1))
            || intermediates != null
            || usesDefaltValues) {
          o.print("@ReturnValue(");
          o.beginCommaMode();
          if (!retBinding.isDefault && needsMarshalAs()) {
            o.comma();
            o.print("type=NativeType." + retBinding.nativeType.name());
          }
          if (retParam != -1 && params[retParam].isIn()) {
            o.comma();
            o.print("inout=true");
          }
          if (retParam != -1 && retParam != params.length - 1 || usesDefaltValues) {
            o.comma();
            o.print("index=" + retParam);
          }
  
          if (intermediates != null) {
            o.comma();
            o.print("defaultPropertyThrough={");
            o.beginCommaMode();
            for (IType im : intermediates) {
              TypeBinding vb = TypeBinding.bind(g, im, null);
              o.comma();
              o.print(vb.javaType);
              o.print(".class");
            }
            o.endCommaMode();
            o.print("}");
          }
  
          o.endCommaMode();
          o.println(")");
        }
  
        o.print(retBinding.javaType);
        o.print(' ');
      }
    }
docs: Declares the return type.