private String getTypeAsString(String typeName, boolean isParam, String prefix, String suffix) {
    if (typeName.equals("boolean")) {
      if (isParam) {
        return "bool ";
      } else {
        return "bool";
      }
    } else if (typeName.equals("String")) {
      if (isParam) {
        return "const std::string &";
      } else {
        return "std::string";
      }
    } else if (nativeTypes.contains(typeName)) {
      if (isParam) {
        if (typeName.equals("int64")) {
          return "int64_t ";
        } else {
          return typeName + " ";
        }
      } else {
        if (typeName.equals("int64")) {
          return "int64_t";
        } else {
          return typeName;
        }
      }
    } else {
      if (isParam) {
        return "std::shared_ptr<" + prefix + typeName + suffix + "> ";
      } else {
        return "std::shared_ptr<" + prefix + typeName + suffix + ">";
      }
    }
  }