public static void cppOutputSignature(Cons signature, boolean outputmethodclassP) {
    { StringWrapper methodclass = ((StringWrapper)(signature.value));
      Stella_Object returntype = signature.rest.value;
      StringWrapper name = ((StringWrapper)(signature.rest.rest.value));
      Stella_Object parameters = signature.fourth();

      { String result000 = null;

        { Object old$CurrentStream$000 = Stella.$CURRENT_STREAM$.get();

          try {
            Native.setSpecial(Stella.$CURRENT_STREAM$, OutputStringStream.newOutputStringStream());
            {
              if (outputmethodclassP &&
                  (methodclass != null)) {
                ((OutputStream)(Stella.$CURRENT_STREAM$.get())).nativeStream.print(methodclass.wrapperValue);
                ((OutputStream)(Stella.$CURRENT_STREAM$.get())).nativeStream.print("::");
              }
              ((OutputStream)(Stella.$CURRENT_STREAM$.get())).nativeStream.print(name.wrapperValue);
              Cons.cppOutputFormalParameters(((Cons)(parameters)));
            }
            result000 = ((OutputStringStream)(((OutputStream)(Stella.$CURRENT_STREAM$.get())))).theStringReader();

          } finally {
            Stella.$CURRENT_STREAM$.set(old$CurrentStream$000);
          }
        }
        { String baresignature = result000;

          Stella_Object.cppOutputTypedEntity(returntype, StringWrapper.wrapString(baresignature), null);
        }
      }
    }
  }