title: How to use Lombok @SuperBuilder on Abstract classes with final fields
body: <p>Given the following classes with the Lombok annotations <code>@Data</code> and <code>@SuperBuilder</code></p>
  
  <pre><code>@Data
  @SuperBuilder
  public abstract class Parent {
  
      protected final String userId;
      protected final Instant requestingTime;
  }
  
  @Data
  @SuperBuilder
  public class Child extends Parent {
  
      private final Instant beginningDate;
      private final Instant endingDate;
      private final Collection&lt;String&gt; fields;
  }
  
  </code></pre>
  
  <p>I am getting the following error appearing over the <code>@Data</code> annotation in the <code>Child</code> class: </p>
  
  <blockquote>
    <p>Implicit super constructor Parent() is undefined. Must explicitly invoke another constructor.</p>
  </blockquote>
  
  <p>Is there a way to configure a non-default constructor on the <code>Child</code> class's <code>@Data</code> annotation in order to have all <code>final</code> fields on both the <code>Child</code> and <code>Parent</code> classes initialized when invoking the Builder?</p>
  
  <p>I have tried a few different combinations of the <code>@Data</code>, <code>@Getter</code>, <code>@Setter</code> annotations with the <code>@SuperBuilder</code> annotation on both the child and parent classes, but haven't found a working solution yet. I am using Lombok 1.18.10.</p>
  
  <p>For reference, <a href="https://stackoverflow.com/questions/51208842/how-to-implements-lombok-builder-for-abstract-class">this</a> question is related</p>
  
  <p><strong><em>EDIT</em></strong></p>
  
  <p>This is effectively the constructor that Lombok should be constructing and invoking on the <code>SuperBuilder.build()</code> operation.</p>
  
  <pre><code>public Child(
      final String userId,
      final Instant requestingTime,
      final Instant beginningDate,
      final Instant endingDate,
      final Collection&lt;String&gt; fields) {
  
      super(userId, requestingTime);
      this.beginningDate = beginningDate;
      this.endingDate = endingDate;
      this.fields= fields;
  }
  </code></pre>
  
  <p>As requested, this is how I would expect to invoke the builder on the <code>Child</code> object.</p>
  
  <pre><code>final Child child = Child.Builder()
                           .userId(&lt;value&gt;)
                           .requestingTime(&lt;value&gt;)
                           .beginningDate(&lt;value&gt;)
                           .endingDate(&lt;value&gt;)
                           .fields(&lt;value&gt;)
                           .build();
  </code></pre>