code: private MethodDeclaration generateGetParamMethodForSoyElementClass(
        TemplateParam param, boolean isAbstract) {
      JsType jsType = JsType.forIncrementalDomState(param.type());
      String accessorSuffix =
          Ascii.toUpperCase(param.name().substring(0, 1)) + param.name().substring(1);
      if (isAbstract) {
        return MethodDeclaration.create(
            "get" + accessorSuffix,
            JsDoc.builder()
                .addAnnotation("abstract")
                .addParameterizedAnnotation("return", jsType.typeExpr())
                .build(),
            Statement.of(ImmutableList.of()));
      }
      Expression value = id("this").dotAccess("data").dotAccess(param.name());
      if (param.hasDefault()) {
        value =
            templateTranslationContext
                .codeGenerator()
                .declarationBuilder()
                .setRhs(value)
                .build()
                .ref();
        value =
            value.withInitialStatement(
                genParamDefault(
                    param,
                    value,
                    alias,
                    getJsTypeForParamTypeCheck(param.type()),
                    /* declareStatic= */ false));
      }
      MethodDeclaration getParamMethod =
          MethodDeclaration.create(
              "get" + accessorSuffix,
              JsDoc.builder().addAnnotation("override").addAnnotation("public").build(),
              Statement.returnValue(value));
      return getParamMethod;
    }
docs: Generates `get[X]` for a given parameter value.