├── .github ├── dependabot.yml └── workflows │ └── gradle.yml ├── .gitignore ├── CLAUDE.md ├── Java_Upgrade_Slides.pdf ├── LICENSE ├── README.md ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── labs.md ├── settings.gradle └── src ├── main └── java │ ├── CollectorsDemo.java │ ├── FinderDemo.java │ ├── IterateDemo.java │ ├── OptionalDemo.java │ ├── Product.java │ ├── RandomDemo.java │ ├── SummarizingDemo.java │ ├── UseProducts.java │ ├── concurrency │ ├── AwaitQuiesence.java │ ├── CompletableFutureDemos.java │ └── Product.java │ ├── dao │ └── Employee.java │ ├── datetime │ └── AntarcticaTimeZones.java │ ├── eam │ ├── after │ │ ├── Resource.java │ │ └── UseResource.java │ └── before │ │ ├── Resource.java │ │ └── UseResource.java │ ├── got │ ├── House.java │ ├── InMemoryMemberDAO.java │ ├── Member.java │ ├── MemberDAO.java │ ├── MemberDB.java │ └── Title.java │ ├── interfaces │ ├── Animal.java │ ├── Bird.java │ ├── Company.java │ ├── CompanyEmployee.java │ ├── Employee.java │ ├── Horse.java │ ├── MyCompany.java │ └── Pegasus.java │ ├── io │ └── ProcessDictionary.java │ ├── lambdas │ ├── MapDemo.java │ ├── Person.java │ ├── RunnableDemo.java │ ├── Runner.java │ └── UsePerson.java │ ├── lazy │ ├── LazyStreams.java │ └── OptionalExceptionDemo.java │ ├── optional │ ├── Company.java │ ├── Department.java │ ├── Manager.java │ ├── Product.java │ └── ProductDAO.java │ ├── primes │ ├── after │ │ ├── PrimeCalculator.java │ │ └── SumSqrtPrimes.java │ └── before │ │ ├── PrimeCalculator.java │ │ └── SumSqrtPrimes.java │ ├── refactoring │ ├── after │ │ └── LoopsSortsAndIfs.java │ └── before │ │ └── LoopsSortsAndIfs.java │ ├── sorting │ ├── Golfer.java │ ├── SortGolfers.java │ └── SortStrings.java │ └── streams │ ├── AlternativeReduceDemo.java │ ├── BoxedStreams.java │ ├── Customer.java │ ├── FlatMapDemo.java │ ├── Order.java │ ├── Ordering.java │ └── SumBigDecimals.java └── test └── java ├── concurrency ├── AwaitQuiesenceTest.java ├── CompletableFutureDemosTest.java └── CompletableFutureTests.java ├── got └── InMemoryMemberDAOTests.java ├── interfaces └── CompanyEmployeeTest.java ├── lambdas ├── BinaryOperatorTest.java ├── FileFilterExercises.java ├── FunctionExercises.java ├── FunctionalInterfacesTest.java ├── LazyEvaluationExercises.java └── RunnableExercises.java ├── optional ├── CompanyTest.java └── ProductDAOTest.java ├── sorting └── BookSortingExercises.java └── streams ├── BigDecimalReduceExercises.java ├── FlatMapExercises.java ├── ParallelStreamExercises.java ├── StringExercises.java ├── SumBigDecimalsTest.java └── SumEvens.java /.github/dependabot.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kousen/java_upgrade/HEAD/.github/dependabot.yml -------------------------------------------------------------------------------- /.github/workflows/gradle.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kousen/java_upgrade/HEAD/.github/workflows/gradle.yml -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kousen/java_upgrade/HEAD/.gitignore -------------------------------------------------------------------------------- /CLAUDE.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kousen/java_upgrade/HEAD/CLAUDE.md -------------------------------------------------------------------------------- /Java_Upgrade_Slides.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kousen/java_upgrade/HEAD/Java_Upgrade_Slides.pdf -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kousen/java_upgrade/HEAD/LICENSE -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kousen/java_upgrade/HEAD/README.md -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kousen/java_upgrade/HEAD/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kousen/java_upgrade/HEAD/gradle/wrapper/gradle-wrapper.properties -------------------------------------------------------------------------------- /gradlew: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kousen/java_upgrade/HEAD/gradlew -------------------------------------------------------------------------------- /gradlew.bat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kousen/java_upgrade/HEAD/gradlew.bat -------------------------------------------------------------------------------- /labs.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kousen/java_upgrade/HEAD/labs.md -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'java_upgrade' 2 | 3 | -------------------------------------------------------------------------------- /src/main/java/CollectorsDemo.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kousen/java_upgrade/HEAD/src/main/java/CollectorsDemo.java -------------------------------------------------------------------------------- /src/main/java/FinderDemo.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kousen/java_upgrade/HEAD/src/main/java/FinderDemo.java -------------------------------------------------------------------------------- /src/main/java/IterateDemo.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kousen/java_upgrade/HEAD/src/main/java/IterateDemo.java -------------------------------------------------------------------------------- /src/main/java/OptionalDemo.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kousen/java_upgrade/HEAD/src/main/java/OptionalDemo.java -------------------------------------------------------------------------------- /src/main/java/Product.java: -------------------------------------------------------------------------------- 1 | public record Product(String name, double price) { 2 | } 3 | -------------------------------------------------------------------------------- /src/main/java/RandomDemo.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kousen/java_upgrade/HEAD/src/main/java/RandomDemo.java -------------------------------------------------------------------------------- /src/main/java/SummarizingDemo.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kousen/java_upgrade/HEAD/src/main/java/SummarizingDemo.java -------------------------------------------------------------------------------- /src/main/java/UseProducts.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kousen/java_upgrade/HEAD/src/main/java/UseProducts.java -------------------------------------------------------------------------------- /src/main/java/concurrency/AwaitQuiesence.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kousen/java_upgrade/HEAD/src/main/java/concurrency/AwaitQuiesence.java -------------------------------------------------------------------------------- /src/main/java/concurrency/CompletableFutureDemos.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kousen/java_upgrade/HEAD/src/main/java/concurrency/CompletableFutureDemos.java -------------------------------------------------------------------------------- /src/main/java/concurrency/Product.java: -------------------------------------------------------------------------------- 1 | package concurrency; 2 | 3 | public record Product(int id, String name) { 4 | } -------------------------------------------------------------------------------- /src/main/java/dao/Employee.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kousen/java_upgrade/HEAD/src/main/java/dao/Employee.java -------------------------------------------------------------------------------- /src/main/java/datetime/AntarcticaTimeZones.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kousen/java_upgrade/HEAD/src/main/java/datetime/AntarcticaTimeZones.java -------------------------------------------------------------------------------- /src/main/java/eam/after/Resource.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kousen/java_upgrade/HEAD/src/main/java/eam/after/Resource.java -------------------------------------------------------------------------------- /src/main/java/eam/after/UseResource.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kousen/java_upgrade/HEAD/src/main/java/eam/after/UseResource.java -------------------------------------------------------------------------------- /src/main/java/eam/before/Resource.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kousen/java_upgrade/HEAD/src/main/java/eam/before/Resource.java -------------------------------------------------------------------------------- /src/main/java/eam/before/UseResource.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kousen/java_upgrade/HEAD/src/main/java/eam/before/UseResource.java -------------------------------------------------------------------------------- /src/main/java/got/House.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kousen/java_upgrade/HEAD/src/main/java/got/House.java -------------------------------------------------------------------------------- /src/main/java/got/InMemoryMemberDAO.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kousen/java_upgrade/HEAD/src/main/java/got/InMemoryMemberDAO.java -------------------------------------------------------------------------------- /src/main/java/got/Member.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kousen/java_upgrade/HEAD/src/main/java/got/Member.java -------------------------------------------------------------------------------- /src/main/java/got/MemberDAO.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kousen/java_upgrade/HEAD/src/main/java/got/MemberDAO.java -------------------------------------------------------------------------------- /src/main/java/got/MemberDB.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kousen/java_upgrade/HEAD/src/main/java/got/MemberDB.java -------------------------------------------------------------------------------- /src/main/java/got/Title.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kousen/java_upgrade/HEAD/src/main/java/got/Title.java -------------------------------------------------------------------------------- /src/main/java/interfaces/Animal.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kousen/java_upgrade/HEAD/src/main/java/interfaces/Animal.java -------------------------------------------------------------------------------- /src/main/java/interfaces/Bird.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kousen/java_upgrade/HEAD/src/main/java/interfaces/Bird.java -------------------------------------------------------------------------------- /src/main/java/interfaces/Company.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kousen/java_upgrade/HEAD/src/main/java/interfaces/Company.java -------------------------------------------------------------------------------- /src/main/java/interfaces/CompanyEmployee.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kousen/java_upgrade/HEAD/src/main/java/interfaces/CompanyEmployee.java -------------------------------------------------------------------------------- /src/main/java/interfaces/Employee.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kousen/java_upgrade/HEAD/src/main/java/interfaces/Employee.java -------------------------------------------------------------------------------- /src/main/java/interfaces/Horse.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kousen/java_upgrade/HEAD/src/main/java/interfaces/Horse.java -------------------------------------------------------------------------------- /src/main/java/interfaces/MyCompany.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kousen/java_upgrade/HEAD/src/main/java/interfaces/MyCompany.java -------------------------------------------------------------------------------- /src/main/java/interfaces/Pegasus.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kousen/java_upgrade/HEAD/src/main/java/interfaces/Pegasus.java -------------------------------------------------------------------------------- /src/main/java/io/ProcessDictionary.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kousen/java_upgrade/HEAD/src/main/java/io/ProcessDictionary.java -------------------------------------------------------------------------------- /src/main/java/lambdas/MapDemo.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kousen/java_upgrade/HEAD/src/main/java/lambdas/MapDemo.java -------------------------------------------------------------------------------- /src/main/java/lambdas/Person.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kousen/java_upgrade/HEAD/src/main/java/lambdas/Person.java -------------------------------------------------------------------------------- /src/main/java/lambdas/RunnableDemo.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kousen/java_upgrade/HEAD/src/main/java/lambdas/RunnableDemo.java -------------------------------------------------------------------------------- /src/main/java/lambdas/Runner.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kousen/java_upgrade/HEAD/src/main/java/lambdas/Runner.java -------------------------------------------------------------------------------- /src/main/java/lambdas/UsePerson.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kousen/java_upgrade/HEAD/src/main/java/lambdas/UsePerson.java -------------------------------------------------------------------------------- /src/main/java/lazy/LazyStreams.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kousen/java_upgrade/HEAD/src/main/java/lazy/LazyStreams.java -------------------------------------------------------------------------------- /src/main/java/lazy/OptionalExceptionDemo.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kousen/java_upgrade/HEAD/src/main/java/lazy/OptionalExceptionDemo.java -------------------------------------------------------------------------------- /src/main/java/optional/Company.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kousen/java_upgrade/HEAD/src/main/java/optional/Company.java -------------------------------------------------------------------------------- /src/main/java/optional/Department.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kousen/java_upgrade/HEAD/src/main/java/optional/Department.java -------------------------------------------------------------------------------- /src/main/java/optional/Manager.java: -------------------------------------------------------------------------------- 1 | package optional; 2 | 3 | public record Manager(String name) { 4 | } -------------------------------------------------------------------------------- /src/main/java/optional/Product.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kousen/java_upgrade/HEAD/src/main/java/optional/Product.java -------------------------------------------------------------------------------- /src/main/java/optional/ProductDAO.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kousen/java_upgrade/HEAD/src/main/java/optional/ProductDAO.java -------------------------------------------------------------------------------- /src/main/java/primes/after/PrimeCalculator.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kousen/java_upgrade/HEAD/src/main/java/primes/after/PrimeCalculator.java -------------------------------------------------------------------------------- /src/main/java/primes/after/SumSqrtPrimes.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kousen/java_upgrade/HEAD/src/main/java/primes/after/SumSqrtPrimes.java -------------------------------------------------------------------------------- /src/main/java/primes/before/PrimeCalculator.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kousen/java_upgrade/HEAD/src/main/java/primes/before/PrimeCalculator.java -------------------------------------------------------------------------------- /src/main/java/primes/before/SumSqrtPrimes.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kousen/java_upgrade/HEAD/src/main/java/primes/before/SumSqrtPrimes.java -------------------------------------------------------------------------------- /src/main/java/refactoring/after/LoopsSortsAndIfs.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kousen/java_upgrade/HEAD/src/main/java/refactoring/after/LoopsSortsAndIfs.java -------------------------------------------------------------------------------- /src/main/java/refactoring/before/LoopsSortsAndIfs.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kousen/java_upgrade/HEAD/src/main/java/refactoring/before/LoopsSortsAndIfs.java -------------------------------------------------------------------------------- /src/main/java/sorting/Golfer.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kousen/java_upgrade/HEAD/src/main/java/sorting/Golfer.java -------------------------------------------------------------------------------- /src/main/java/sorting/SortGolfers.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kousen/java_upgrade/HEAD/src/main/java/sorting/SortGolfers.java -------------------------------------------------------------------------------- /src/main/java/sorting/SortStrings.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kousen/java_upgrade/HEAD/src/main/java/sorting/SortStrings.java -------------------------------------------------------------------------------- /src/main/java/streams/AlternativeReduceDemo.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kousen/java_upgrade/HEAD/src/main/java/streams/AlternativeReduceDemo.java -------------------------------------------------------------------------------- /src/main/java/streams/BoxedStreams.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kousen/java_upgrade/HEAD/src/main/java/streams/BoxedStreams.java -------------------------------------------------------------------------------- /src/main/java/streams/Customer.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kousen/java_upgrade/HEAD/src/main/java/streams/Customer.java -------------------------------------------------------------------------------- /src/main/java/streams/FlatMapDemo.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kousen/java_upgrade/HEAD/src/main/java/streams/FlatMapDemo.java -------------------------------------------------------------------------------- /src/main/java/streams/Order.java: -------------------------------------------------------------------------------- 1 | package streams; 2 | 3 | public record Order(int id) { 4 | } 5 | -------------------------------------------------------------------------------- /src/main/java/streams/Ordering.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kousen/java_upgrade/HEAD/src/main/java/streams/Ordering.java -------------------------------------------------------------------------------- /src/main/java/streams/SumBigDecimals.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kousen/java_upgrade/HEAD/src/main/java/streams/SumBigDecimals.java -------------------------------------------------------------------------------- /src/test/java/concurrency/AwaitQuiesenceTest.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kousen/java_upgrade/HEAD/src/test/java/concurrency/AwaitQuiesenceTest.java -------------------------------------------------------------------------------- /src/test/java/concurrency/CompletableFutureDemosTest.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kousen/java_upgrade/HEAD/src/test/java/concurrency/CompletableFutureDemosTest.java -------------------------------------------------------------------------------- /src/test/java/concurrency/CompletableFutureTests.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kousen/java_upgrade/HEAD/src/test/java/concurrency/CompletableFutureTests.java -------------------------------------------------------------------------------- /src/test/java/got/InMemoryMemberDAOTests.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kousen/java_upgrade/HEAD/src/test/java/got/InMemoryMemberDAOTests.java -------------------------------------------------------------------------------- /src/test/java/interfaces/CompanyEmployeeTest.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kousen/java_upgrade/HEAD/src/test/java/interfaces/CompanyEmployeeTest.java -------------------------------------------------------------------------------- /src/test/java/lambdas/BinaryOperatorTest.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kousen/java_upgrade/HEAD/src/test/java/lambdas/BinaryOperatorTest.java -------------------------------------------------------------------------------- /src/test/java/lambdas/FileFilterExercises.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kousen/java_upgrade/HEAD/src/test/java/lambdas/FileFilterExercises.java -------------------------------------------------------------------------------- /src/test/java/lambdas/FunctionExercises.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kousen/java_upgrade/HEAD/src/test/java/lambdas/FunctionExercises.java -------------------------------------------------------------------------------- /src/test/java/lambdas/FunctionalInterfacesTest.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kousen/java_upgrade/HEAD/src/test/java/lambdas/FunctionalInterfacesTest.java -------------------------------------------------------------------------------- /src/test/java/lambdas/LazyEvaluationExercises.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kousen/java_upgrade/HEAD/src/test/java/lambdas/LazyEvaluationExercises.java -------------------------------------------------------------------------------- /src/test/java/lambdas/RunnableExercises.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kousen/java_upgrade/HEAD/src/test/java/lambdas/RunnableExercises.java -------------------------------------------------------------------------------- /src/test/java/optional/CompanyTest.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kousen/java_upgrade/HEAD/src/test/java/optional/CompanyTest.java -------------------------------------------------------------------------------- /src/test/java/optional/ProductDAOTest.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kousen/java_upgrade/HEAD/src/test/java/optional/ProductDAOTest.java -------------------------------------------------------------------------------- /src/test/java/sorting/BookSortingExercises.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kousen/java_upgrade/HEAD/src/test/java/sorting/BookSortingExercises.java -------------------------------------------------------------------------------- /src/test/java/streams/BigDecimalReduceExercises.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kousen/java_upgrade/HEAD/src/test/java/streams/BigDecimalReduceExercises.java -------------------------------------------------------------------------------- /src/test/java/streams/FlatMapExercises.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kousen/java_upgrade/HEAD/src/test/java/streams/FlatMapExercises.java -------------------------------------------------------------------------------- /src/test/java/streams/ParallelStreamExercises.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kousen/java_upgrade/HEAD/src/test/java/streams/ParallelStreamExercises.java -------------------------------------------------------------------------------- /src/test/java/streams/StringExercises.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kousen/java_upgrade/HEAD/src/test/java/streams/StringExercises.java -------------------------------------------------------------------------------- /src/test/java/streams/SumBigDecimalsTest.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kousen/java_upgrade/HEAD/src/test/java/streams/SumBigDecimalsTest.java -------------------------------------------------------------------------------- /src/test/java/streams/SumEvens.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kousen/java_upgrade/HEAD/src/test/java/streams/SumEvens.java --------------------------------------------------------------------------------