code: private ImmutableList<MemberDefinition> parseReadOnlyProperties(
        final PolymerClassDefinition cls, Node block) {
      String qualifiedPath = cls.target.getQualifiedName() + ".prototype.";
      ImmutableList.Builder<MemberDefinition> readOnlyProps = ImmutableList.builder();
  
      for (MemberDefinition prop : cls.props) {
        // Generate the setter for readOnly properties.
        if (prop.value.isObjectLit()) {
          Node readOnlyValue = NodeUtil.getFirstPropMatchingKey(prop.value, "readOnly");
          if (readOnlyValue != null && readOnlyValue.isTrue()) {
            Node setter = makeReadOnlySetter(prop.name.getString(), qualifiedPath);
            setter.useSourceInfoIfMissingFromForTree(prop.name);
            block.addChildToBack(setter);
            readOnlyProps.add(prop);
          }
        }
      }
  
      return readOnlyProps.build();
    }
docs: Generates the _set* setters for readonly properties and appends them to the given block.
  
  @return A List of all readonly properties.