code: package com.puppycrawl.tools.checkstyle.checks.indentation.indentation; //indent:0 exp:0
  
  import java.util.List; //indent:0 exp:0
  import java.util.function.Function; //indent:0 exp:0
  
  /**                                                                           //indent:0 exp:0
   * This test-input is intended to be checked using following configuration:   //indent:1 exp:1
   *                                                                            //indent:1 exp:1
   * arrayInitIndent = 4                                                        //indent:1 exp:1
   * basicOffset = 4                                                            //indent:1 exp:1
   * braceAdjustment = 0                                                        //indent:1 exp:1
   * caseIndent = 4                                                             //indent:1 exp:1
   * forceStrictCondition = false                                               //indent:1 exp:1
   * lineWrappingIndentation = 4                                                //indent:1 exp:1
   * tabWidth = 4                                                               //indent:1 exp:1
   * throwsIndent = 4                                                           //indent:1 exp:1
   *                                                                            //indent:1 exp:1
   *                                                                            //indent:1 exp:1
   */                                                                           //indent:1 exp:1
  public class InputIndentationMethodCallLineWrap { //indent:0 exp:0
  
      void foo() { //indent:4 exp:4
          new String() //indent:8 exp:8
              .substring( //indent:12 exp:12
                  0, 100 //indent:16 exp:16
              ) //indent:12 exp:12
              .substring( //indent:12 exp:12
                  0, 50 //indent:16 exp:16
              ); //indent:12 exp:12
      } //indent:4 exp:4
  
      class InnerFoo { //indent:4 exp:4
  
      	void foo() { //indent:8 exp:8
              new String() //indent:12 exp:12
                  .substring( //indent:16 exp:16
                      0, 100 //indent:20 exp:20
                  ) //indent:16 exp:16
                  .substring( //indent:16 exp:16
                      0, 50 //indent:20 exp:20
                  ); //indent:16 exp:16
          } //indent:8 exp:8
      } //indent:4 exp:4
  
      InnerFoo anon = new InnerFoo() { //indent:4 exp:4
  
      	void foo() { //indent:8 exp:8
              new String() //indent:12 exp:12
                  .substring( //indent:16 exp:16
                      0, 100 //indent:20 exp:20
                  ) //indent:16 exp:16
                  .substring( //indent:16 exp:16
                    0, 50 //indent:18 exp:20 warn
                ); //indent:14 exp:16 warn
          } //indent:8 exp:8
      }; //indent:4 exp:4
  
      void chaining() { //indent:4 exp:4
          toString() //indent:8 exp:8
                  .getClass(); //indent:16 exp:16
          toString().contains(//indent:8 exp:8
              new String(//indent:12 exp:12
                      "a" //indent:20 exp:20
              )//indent:12 exp:12
          ); //indent:8 exp:8
      } //indent:4 exp:4
  
      <U> void chainingWithLambda(Function<?, ? extends U> f) { //indent:4 exp:4
          this.<Function<List<?>, Boolean>> //indent:8 exp:8
              chainingWithLambda( //indent:12 exp:12
                  x -> //indent:16 exp:16
                      y -> y.contains(0)); //indent:20 exp:20
          this. //indent:8 exp:8
              chainingWithLambda( //indent:12 exp:12
              x -> x); //indent:12 exp:16 warn
      } //indent:4 exp:4
  } //indent:0 exp:0
  