private static OrderingProvider createProvider() {
    if (Compiler.ECJ.isPresent() && !Boolean.getBoolean("org.immutables.disableEclipseOrderingProvider")) {
      return new EclipseCompilerOrderingProvider();
    }
    return DEFAULT_PROVIDER;
  }
Utility that abstracts away hacks to retrieve elements in source order. Currently, Javac returns
elements in proper source order, but EJC returns elements in alphabetical order.
<ul>
<li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=300408">Bug 300408 -
TypeElement.getEnclosedElements does not respect source order</a>
<li><a href="http://bugs.sun.com/view_bug.do?bug_id=6884227">JDK-6884227 : Clarify ordering
requirements of javax.lang.model.TypeElement.getEnclosedElements</a>
</ul>
<p>
<em>Based on a workaround idea provided by Christian Humer</em>

NOTE: The Eclipse bug is fixed, and this workaround can be disabled by setting the system property
{@code org.immutables.disableEclipseOrderingProvider=true}.
generator/src/org/immutables/generator/SourceOrdering.java