code: public void getAttributes(int symbol, Set<Attribute> internal, Set<Attribute> synthesized, Set<Attribute> inherited) {
          int i;
          int max;
          Attribute a;
  
          for (AttributionBuffer ab : attributions) {
              a = ab.result.attr;
              if (a.symbol == symbol) {
                  if (ab.result.ofs == -1) {
                      synthesized.add(a);
                  } else {
                      inherited.add(a);
                  }
              }
          }
          max = internals.size();
          for (i = 0; i < max; i += 2) {
              a = (Attribute) internals.get(i);
              if (a.symbol == symbol) {
                  internal.add(a);
              }
          }
      }
docs: Besides the classic synthesized and inherited attributes, I have internal attributes.
  Internal attributes are computed when creating the node, a better name might be 'initial'.