/*
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 * 
 *   http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 */

package freemarker.ext.beans;

// FMPP template source:
// ----
// package freemarker.ext.beans;
// 
// // FMPP template source:
// // ----
// <#assign src><#include "ManyStaticsOfDifferentClasses.java.ftl" parse=false></#assign>
// ${src?trim?replace('(.*\r?\n)|.+', r'// $0', 'r')}
// // ----
// 
// <#assign MAX_CLA = 8 - 1>
// <#assign MAX_MET = 10 - 1>
// <#assign MAX_PRO = 10 - 1>
// 
// public class ManyStaticsOfDifferentClasses {
// 
//     private ManyStaticsOfDifferentClasses() { }
// 
//     <#list 0..MAX_CLA as claI>
//     static public class C${claI} {
//         <#list 0..MAX_PRO as proI>
//         public static int p${proI} = ${claI} * 1000 + ${proI};
//         </#list>
//         <#list 0..MAX_MET as metI>
//         public static int m${metI}() { return ${claI} * 1000 + ${metI}; };
//         </#list>
//     }
//     </#list>
//     
// }
// ----


public class ManyStaticsOfDifferentClasses {

    private ManyStaticsOfDifferentClasses() { }

    static public class C0 {
        public static int p0 = 0 * 1000 + 0;
        public static int p1 = 0 * 1000 + 1;
        public static int p2 = 0 * 1000 + 2;
        public static int p3 = 0 * 1000 + 3;
        public static int p4 = 0 * 1000 + 4;
        public static int p5 = 0 * 1000 + 5;
        public static int p6 = 0 * 1000 + 6;
        public static int p7 = 0 * 1000 + 7;
        public static int p8 = 0 * 1000 + 8;
        public static int p9 = 0 * 1000 + 9;
        public static int m0() { return 0 * 1000 + 0; };
        public static int m1() { return 0 * 1000 + 1; };
        public static int m2() { return 0 * 1000 + 2; };
        public static int m3() { return 0 * 1000 + 3; };
        public static int m4() { return 0 * 1000 + 4; };
        public static int m5() { return 0 * 1000 + 5; };
        public static int m6() { return 0 * 1000 + 6; };
        public static int m7() { return 0 * 1000 + 7; };
        public static int m8() { return 0 * 1000 + 8; };
        public static int m9() { return 0 * 1000 + 9; };
    }
    static public class C1 {
        public static int p0 = 1 * 1000 + 0;
        public static int p1 = 1 * 1000 + 1;
        public static int p2 = 1 * 1000 + 2;
        public static int p3 = 1 * 1000 + 3;
        public static int p4 = 1 * 1000 + 4;
        public static int p5 = 1 * 1000 + 5;
        public static int p6 = 1 * 1000 + 6;
        public static int p7 = 1 * 1000 + 7;
        public static int p8 = 1 * 1000 + 8;
        public static int p9 = 1 * 1000 + 9;
        public static int m0() { return 1 * 1000 + 0; };
        public static int m1() { return 1 * 1000 + 1; };
        public static int m2() { return 1 * 1000 + 2; };
        public static int m3() { return 1 * 1000 + 3; };
        public static int m4() { return 1 * 1000 + 4; };
        public static int m5() { return 1 * 1000 + 5; };
        public static int m6() { return 1 * 1000 + 6; };
        public static int m7() { return 1 * 1000 + 7; };
        public static int m8() { return 1 * 1000 + 8; };
        public static int m9() { return 1 * 1000 + 9; };
    }
    static public class C2 {
        public static int p0 = 2 * 1000 + 0;
        public static int p1 = 2 * 1000 + 1;
        public static int p2 = 2 * 1000 + 2;
        public static int p3 = 2 * 1000 + 3;
        public static int p4 = 2 * 1000 + 4;
        public static int p5 = 2 * 1000 + 5;
        public static int p6 = 2 * 1000 + 6;
        public static int p7 = 2 * 1000 + 7;
        public static int p8 = 2 * 1000 + 8;
        public static int p9 = 2 * 1000 + 9;
        public static int m0() { return 2 * 1000 + 0; };
        public static int m1() { return 2 * 1000 + 1; };
        public static int m2() { return 2 * 1000 + 2; };
        public static int m3() { return 2 * 1000 + 3; };
        public static int m4() { return 2 * 1000 + 4; };
        public static int m5() { return 2 * 1000 + 5; };
        public static int m6() { return 2 * 1000 + 6; };
        public static int m7() { return 2 * 1000 + 7; };
        public static int m8() { return 2 * 1000 + 8; };
        public static int m9() { return 2 * 1000 + 9; };
    }
    static public class C3 {
        public static int p0 = 3 * 1000 + 0;
        public static int p1 = 3 * 1000 + 1;
        public static int p2 = 3 * 1000 + 2;
        public static int p3 = 3 * 1000 + 3;
        public static int p4 = 3 * 1000 + 4;
        public static int p5 = 3 * 1000 + 5;
        public static int p6 = 3 * 1000 + 6;
        public static int p7 = 3 * 1000 + 7;
        public static int p8 = 3 * 1000 + 8;
        public static int p9 = 3 * 1000 + 9;
        public static int m0() { return 3 * 1000 + 0; };
        public static int m1() { return 3 * 1000 + 1; };
        public static int m2() { return 3 * 1000 + 2; };
        public static int m3() { return 3 * 1000 + 3; };
        public static int m4() { return 3 * 1000 + 4; };
        public static int m5() { return 3 * 1000 + 5; };
        public static int m6() { return 3 * 1000 + 6; };
        public static int m7() { return 3 * 1000 + 7; };
        public static int m8() { return 3 * 1000 + 8; };
        public static int m9() { return 3 * 1000 + 9; };
    }
    static public class C4 {
        public static int p0 = 4 * 1000 + 0;
        public static int p1 = 4 * 1000 + 1;
        public static int p2 = 4 * 1000 + 2;
        public static int p3 = 4 * 1000 + 3;
        public static int p4 = 4 * 1000 + 4;
        public static int p5 = 4 * 1000 + 5;
        public static int p6 = 4 * 1000 + 6;
        public static int p7 = 4 * 1000 + 7;
        public static int p8 = 4 * 1000 + 8;
        public static int p9 = 4 * 1000 + 9;
        public static int m0() { return 4 * 1000 + 0; };
        public static int m1() { return 4 * 1000 + 1; };
        public static int m2() { return 4 * 1000 + 2; };
        public static int m3() { return 4 * 1000 + 3; };
        public static int m4() { return 4 * 1000 + 4; };
        public static int m5() { return 4 * 1000 + 5; };
        public static int m6() { return 4 * 1000 + 6; };
        public static int m7() { return 4 * 1000 + 7; };
        public static int m8() { return 4 * 1000 + 8; };
        public static int m9() { return 4 * 1000 + 9; };
    }
    static public class C5 {
        public static int p0 = 5 * 1000 + 0;
        public static int p1 = 5 * 1000 + 1;
        public static int p2 = 5 * 1000 + 2;
        public static int p3 = 5 * 1000 + 3;
        public static int p4 = 5 * 1000 + 4;
        public static int p5 = 5 * 1000 + 5;
        public static int p6 = 5 * 1000 + 6;
        public static int p7 = 5 * 1000 + 7;
        public static int p8 = 5 * 1000 + 8;
        public static int p9 = 5 * 1000 + 9;
        public static int m0() { return 5 * 1000 + 0; };
        public static int m1() { return 5 * 1000 + 1; };
        public static int m2() { return 5 * 1000 + 2; };
        public static int m3() { return 5 * 1000 + 3; };
        public static int m4() { return 5 * 1000 + 4; };
        public static int m5() { return 5 * 1000 + 5; };
        public static int m6() { return 5 * 1000 + 6; };
        public static int m7() { return 5 * 1000 + 7; };
        public static int m8() { return 5 * 1000 + 8; };
        public static int m9() { return 5 * 1000 + 9; };
    }
    static public class C6 {
        public static int p0 = 6 * 1000 + 0;
        public static int p1 = 6 * 1000 + 1;
        public static int p2 = 6 * 1000 + 2;
        public static int p3 = 6 * 1000 + 3;
        public static int p4 = 6 * 1000 + 4;
        public static int p5 = 6 * 1000 + 5;
        public static int p6 = 6 * 1000 + 6;
        public static int p7 = 6 * 1000 + 7;
        public static int p8 = 6 * 1000 + 8;
        public static int p9 = 6 * 1000 + 9;
        public static int m0() { return 6 * 1000 + 0; };
        public static int m1() { return 6 * 1000 + 1; };
        public static int m2() { return 6 * 1000 + 2; };
        public static int m3() { return 6 * 1000 + 3; };
        public static int m4() { return 6 * 1000 + 4; };
        public static int m5() { return 6 * 1000 + 5; };
        public static int m6() { return 6 * 1000 + 6; };
        public static int m7() { return 6 * 1000 + 7; };
        public static int m8() { return 6 * 1000 + 8; };
        public static int m9() { return 6 * 1000 + 9; };
    }
    static public class C7 {
        public static int p0 = 7 * 1000 + 0;
        public static int p1 = 7 * 1000 + 1;
        public static int p2 = 7 * 1000 + 2;
        public static int p3 = 7 * 1000 + 3;
        public static int p4 = 7 * 1000 + 4;
        public static int p5 = 7 * 1000 + 5;
        public static int p6 = 7 * 1000 + 6;
        public static int p7 = 7 * 1000 + 7;
        public static int p8 = 7 * 1000 + 8;
        public static int p9 = 7 * 1000 + 9;
        public static int m0() { return 7 * 1000 + 0; };
        public static int m1() { return 7 * 1000 + 1; };
        public static int m2() { return 7 * 1000 + 2; };
        public static int m3() { return 7 * 1000 + 3; };
        public static int m4() { return 7 * 1000 + 4; };
        public static int m5() { return 7 * 1000 + 5; };
        public static int m6() { return 7 * 1000 + 6; };
        public static int m7() { return 7 * 1000 + 7; };
        public static int m8() { return 7 * 1000 + 8; };
        public static int m9() { return 7 * 1000 + 9; };
    }
    
}
