package com.google.checkstyle.test.chapter4formatting.rule42blockindentation; //indent:0 exp:0

import java.util.Map; //indent:0 exp:0
import java.util.ArrayList;//indent:0 exp:0

public abstract class InputIndentationCorrect { //indent:0 exp:0

  
static int i; //indent:2 exp:2

  
int[] c = {1, 2, 3, //indent:2 exp:2
      
4, 5, 6}; //indent:6 exp:6

  
int b; //indent:2 exp:2

  
static { //indent:2 exp:2
    
i = 0; //indent:4 exp:4
  
} //indent:2 exp:2

  
{ //indent:2 exp:2
    
b = 2; //indent:4 exp:4
  
} //indent:2 exp:2

  
private static abstract class RangesMatcher { //indent:2 exp:2

    
private static final String ZEROES = "0\u0660\u06f0" //indent:4 exp:4
        
+ "\u0c66\u0ce6" //indent:8 exp:8
        
+ "\u1c40\u1c50"; //indent:8 exp:8

    
public static final InputIndentationCorrect JAVA_LETTER_OR_DIGIT = //indent:4 exp:4
        
new InputIndentationCorrect() { //indent:8 exp:8
          
@Override public boolean matches(char c) { //indent:10 exp:10
            
return Character.isLetterOrDigit(c); //indent:12 exp:12
          
} //indent:10 exp:10
        
}; //indent:8 exp:8

    
/** Matches no characters. */ //indent:4 exp:4
    
public static final InputFastMatcher NONE = //indent:4 exp:4
            
new InputFastMatcher() { //indent:12 exp:>=8
      
@Override public boolean matches(char c) { //indent:6 exp:6
        
return false; //indent:8 exp:8
      
} //indent:6 exp:6

      
@Override public String replaceFrom(CharSequence seq, CharSequence repl) { //indent:6 exp:6
        
checkNotNull(repl); //indent:8 exp:8
        
return seq.toString(); //indent:8 exp:8
      
} //indent:6 exp:6

      
private void checkNotNull(CharSequence replacement) {} //indent:6 exp:6

      
@Override public String collapseFrom(CharSequence sequence, //indent:6 exp:6
          
char replacement) { //indent:10 exp:10
        
return sequence.toString(); //indent:8 exp:8
      
} //indent:6 exp:6

      
@Override //indent:6 exp:6
      
public String trimTrailingFrom(CharSequence sequence) { //indent:6 exp:6
        
return sequence.toString(); //indent:8 exp:8
      
} //indent:6 exp:6
    
}; //indent:4 exp:4
  
} //indent:2 exp:2

  
public boolean matches(char c) { //indent:2 exp:2
    
return false; //indent:4 exp:4
  
} //indent:2 exp:2

  
public void foo() { //indent:2 exp:2
    
int i = 0; //indent:4 exp:4
    
for (; i < 9; i++) { //indent:4 exp:4
      
if (veryLongLongLongCondition() //indent:6 exp:6
              
|| veryLongLongLongCondition2()) { //indent:14 exp:>=10
        
someFooMethod("longString", "veryLongString", //indent:8 exp:8
            
"superVeryExtraLongString"); //indent:12 exp:12
        
if (veryLongLongLongCondition()) { //indent:8 exp:8
          
while (veryLongLongLongCondition2() //indent:10 exp:10
                
&& veryLongLongLongCondition2()) { //indent:16 exp:>=14
            
try { //indent:12 exp:12
              
doSmth(); //indent:14 exp:14
            
} catch (Exception e) { //indent:12 exp:12
              
throw new AssertionError(e); //indent:14 exp:14
            
} //indent:12 exp:12
          
} //indent:10 exp:10
        
} //indent:8 exp:8
      
} //indent:6 exp:6
    
} //indent:4 exp:4
  
} //indent:2 exp:2

  
public boolean veryLongLongLongCondition() { //indent:2 exp:2
    
if (veryLongLongLongCondition2()) { //indent:4 exp:4
      
return true; //indent:6 exp:6
    
} //indent:4 exp:4
    
return false; //indent:4 exp:4
  
} //indent:2 exp:2

  
public boolean veryLongLongLongCondition2() { //indent:2 exp:2
    
return false; //indent:4 exp:4
  
} //indent:2 exp:2

  
public void someFooMethod(String longString, //indent:2 exp:2
      
String superLongString, String exraSuperLongString) {} //indent:6 exp:6

  
public void fooThrowMethod() //indent:2 exp:2
          
throws Exception { //indent:10 exp:>=6
      
/* Some code*/ //indent:6 exp:6
  
} //indent:2 exp:2

  
public void doSmth() { //indent:2 exp:2
    
for (int h //indent:4 exp:4
          
: c) { //indent:10 exp:>=8
      
someFooMethod("longString", "veryLongString", //indent:6 exp:6
          
"superVeryExtraLongString"); //indent:10 exp:10
    
} //indent:4 exp:4
  
} //indent:2 exp:2
} //indent:0 exp:0