code: @Override
      public int[] vertexColor() {
          int[] result = colors;
          if (result == null) {
              synchronized (this) {
                  result = colors;
                  if (result == null) {
                      colors = result = buildVertexColor();
                  }
              }
          }
          return result;
      }
docs: Lazily build an indexed lookup of vertex color. The vertex color
  indicates which cycle a given vertex belongs. If a vertex belongs to more
  then one cycle it is colored '0'. If a vertex belongs to no cycle it is
  colored '-1'.
  
  @return vertex colors